/*******************************************************************************
 * Copyright (c) 2012 GigaSpaces Technologies Ltd. All rights reserved
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/
package org.cloudifysource.esc.installer;

/**********************************
 * The agentless installer is responsible for installing cloudify on a remote machine using a remote login mechanism
 * (i.e. ssh) and starting the cloudify agent. The main class is AgentlessInstaller.
 *
 *
 * Agentless Installation: The agentless installation process is a two-phase process: 1. File copy: files are copied
 * from a local folder (directory on the machine running the AgentlessInstaller) to a remote directory on the remote
 * host. The following file transfer protocols are supported: - SCP: Used with *nix systems. Uses port 22 by default.
 * Files are encrypted over the wire. Supported authentication mechanisms are username/password and PEM certficate files
 * (files can't be secured with a password) - CIFS: Used with windows systems. Files are copied in the clear. Defaults
 * to port 445. Supports username/password authentication.
 *
 * The local directory is expected to hold at-least one file - the script that will be executed in the second phase.
 * Applications may add additional files to this directory, as well as sub-directories, which will be copied
 * recursively. These files will be copied to the new machine and can be made available to code running on them.
 *
 * Note that the installation process often runs on remote machines and over limited bandwidth, so it is not recommended
 * to transfer large files using this mechanism.
 *
 * 2. Remote execution: A bootstrap script is executed on the remote machine. This script is responsible for setting up
 * Java, Cloudify, running the cloudify agent and starting up any management services, if required. The following remote
 * execution protocols are supported:
 *
 * - SSH: Used with *nix systems. Uses port 22 by default. Commands are encrypted over the wire. Supported
 * authentication mechanisms are username/password and PEM certficate files (files can't be secured with a password).
 *
 * - WinRM: Used with Windows systems. Uses port 5985 by default. Commands are encrypted over the wire (configured on
 * the server). See more details below.
 *
 * When the second phase is finished, the remote node should be connected to the cloudify cluster.
 *
 * Windows Support: ---------------- Cloudify uses MS Powershell to remote execute commands on remote windows machines.
 * This means that running the installation process for a target windows machine requires that the client running the
 * installation process also run windows. This means that a windows machine can start a linux machine, but only a
 * windows machine can start another windows machine.
 *
 * Bootstrapping nodes running Windows requires some additional setup. First, the client machine (which will run the
 * bootstrap-cloud command) must be configured correctly for using winrm. Open a powershell window 'as administrator'
 * and execute the following two commands:
 *
 * set-item WSMan:\localhost\Client\TrustedHosts -Value * -Force set-item WSMan:\localhost\Shell\MaxMemoryPerShellMB
 * -Value 0 -Force
 *
 * If running on a 64-bit machine, it is a good idea to open an x86 powershell window and execute the above commands as
 * well.
 *
 * You only need to do this once.
 *
 * Important: Setting the TrustedHosts setting to '*' has some security implications. You may want to consult with your
 * system administrator about this setting.
 *
 *
 *
 *
 *
 *
 *
 */

